#ifndef FACILITIESGRAPH_H_
#define FACILITIESGRAPH_H_

#include "graphsupport/graph/BiGraph.h"

/**
 * Graph model of Facility Location Problem
 */
class FacilitiesGraph : public BiGraph
{
public:
	typedef Graph::AdjCoefType FacilityPriceType;
	typedef std::vector< FacilityPriceType > FacilityPricesVecType;

public:
	FacilitiesGraph( int citiesCount = 0, int facilitiesCount = 0, AdjCoefType infEdge = DEFAULT_INF );
	virtual void initBi( int firstBipart = 0, int secondBipart = 0, AdjCoefType infEdge = -1 );

public:
	Graph::AdjCoefType getFSEdge( int city, int facility );
	void setFSEdge( int city, int facility, Graph::AdjCoefType coef );
	int getCitiesCount();
	int getFacilitiesCount();

public:
	FacilityPricesVecType facilitiesPrices;
};

#endif /* FACILITIESGRAPH_H_ */
